import os
import json
import get_user_list

if not os.path.exists("temp"):
    os.mkdir("temp")

CONFIG_FILE = 'temp/s.bat'

config = {
    "host": "localhost",
    "port": 3000,
    "port_start": 3000,
    "port_end": 8000,
    "debug": True
}


def read_config(default_config=config):
    """
    读取配置文件内容。如果文件不存在，则返回默认值并写入默认值。

    :param default_config: 默认配置字典
    :return: 配置字典
    """
    if not os.path.exists(CONFIG_FILE):
        print(f"{CONFIG_FILE} 不存在，返回默认配置并写入文件.")
        write_config(default_config)
        return default_config

    with open(CONFIG_FILE, 'r') as file:
        try:
            config = json.load(file)
            return config
        except json.JSONDecodeError:
            print("配置文件格式错误，返回默认配置.")
            write_config(default_config)
            return default_config


def write_config(data):
    """
    写入配置文件，如果文件不存在则创建文件并写入。

    :param data: 要写入的配置数据（字典格式）
    """
    # 创建隐藏文件
    with open(CONFIG_FILE, 'w') as file:
        json.dump(data, file, indent=4)

    # 设置文件为隐藏
#    os.system(f'attrib +h {CONFIG_FILE}')
    print(f"{CONFIG_FILE} 已创建并写入数据.")


def get_port():
    port_list = get_user_list.fetch_all_port()
    config = read_config()
    #print(config)
    cur_port = config.get("port")
    #print(cur_port)
    if cur_port not in port_list:
        return cur_port

    port_end = config.get("port_end")
    for temp_port in range(cur_port + 1, port_end):
        if temp_port not in port_list:
            config["port"] = temp_port
            write_config(config)
            return temp_port

    port_start = config.get("port_end")
    for temp_port in range(port_start, cur_port):
        if temp_port not in port_list:
            config["port"] = temp_port
            write_config(config)
            return temp_port
    return None


# 使用示例
if __name__ == "__main__":
    # 默认配置
    # 尝试读取配置
   # config = read_config()
   # print("最终配置:", config)
   print(get_port())
